package com.xiepei.day01;

import java.util.ArrayList;
import java.util.List;

/**
 * 第2课：ArrayList 常用操作
 * 目标：学会获取、修改、删除元素，以及遍历列表
 * 
 * 对应 JavaScript：
 * - list.get(0) 类似 arr[0]
 * - list.set(0, "新值") 类似 arr[0] = "新值"
 * - list.remove(0) 类似 arr.splice(0, 1)
 * - for循环遍历类似 JS 的 for(let i=0; i<arr.length; i++)
 */
public class Lesson02_ArrayList常用操作 {
    public static void main(String[] args) {
        // 1. 创建一个列表并添加元素
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        
        System.out.println("初始列表：" + list);
        System.out.println("列表大小：" + list.size());
        System.out.println("---");
        
        // 2. 获取元素（类似 JS 的 arr[0]）
        String first = list.get(0);  // 获取第一个元素（索引从0开始）
        System.out.println("第一个元素：" + first);
        System.out.println("第二个元素：" + list.get(1));
        System.out.println("---");
        
        // 3. 修改元素（类似 JS 的 arr[0] = "新值"）
        list.set(0, "张三改名为张飞");  // 把索引0的元素改成新值
        System.out.println("修改后列表：" + list);
        System.out.println("---");
        
        // 4. 删除元素
        // 方式1：根据索引删除（类似 JS 的 arr.splice(1, 1)）
        String removed = list.remove(1);  // 删除索引1的元素，返回被删除的元素
        System.out.println("删除了：" + removed);
        System.out.println("删除后列表：" + list);
        System.out.println("---");
        
        // 方式2：根据值删除（删除第一个匹配的元素）
        boolean success = list.remove("王五");  // 删除值为"王五"的元素
        System.out.println("删除成功：" + success);
        System.out.println("删除后列表：" + list);
        System.out.println("---");
        
        // 5. 遍历列表（方式1：普通for循环）
        System.out.println("方式1：普通for循环遍历");
        for (int i = 0; i < list.size(); i++) {
            System.out.println("索引" + i + "：" + list.get(i));
        }
        System.out.println("---");
        
        // 6. 遍历列表（方式2：增强for循环，类似 JS 的 for...of）
        System.out.println("方式2：增强for循环遍历");
        for (String name : list) {
            System.out.println("元素：" + name);
            System.out.println("元素：" + list);  
        }
        System.out.println("---");
        
        // 7. 判断是否包含某个元素
        boolean hasZhang = list.contains("张三改名为张飞");
        System.out.println("是否包含'张三改名为张飞'：" + hasZhang);
        System.out.println("是否包含'李四'：" + list.contains("李四"));
        System.out.println("---");
        
        // 8. 清空列表
        list.clear();
        System.out.println("清空后列表：" + list);
        System.out.println("列表是否为空：" + list.isEmpty());
    }
}

